//
//  String+Regular.swift
//  54.新工程使用正则截取来源
//
//  Created by apple on 16/3/6.
//  Copyright © 2016年 itcast. All rights reserved.
//

import Foundation

extension String {
    func sinaSource() -> String {
//        let source = "<a href=\"http://weibo.com/\" rel=\"nofollow\">穷游君のiPhone 6s Plus</a><a href=\"http://weibo.com/\" rel=\"nofollow\">穷游君のiPhone 6s Plus</a>"
        
        /*
        pattern: 匹配规则
        1. . : 匹配任何字符串,不包括换行
        2. * : 匹配任意多数量的字符
        3. ? : 尽可能少的匹配
        4. (): 捕获()里面的内容也作为匹配结果返回
        */
        let pattern = ">(.*?)<"
        
        // options: DotMatchesLineSeparators .可以匹配换行
        let regular = try! NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions.DotMatchesLineSeparators)
        
        // string: 从哪个内容里面来查找
        // NSRange: 要查找的字符串的范围
        /* 返回结果: NSTextCheckingResult
        public var numberOfRanges: Int { get } : 匹配到的范围数量
        public func rangeAtIndex(idx: Int) -> NSRange : 根据idx获取匹配范围
        */
        let result = regular.firstMatchInString(self, options: NSMatchingOptions(rawValue: 0), range: NSRange(location: 0, length: self.characters.count))
        
        // 匹配范围的数量
        let count = result?.numberOfRanges ?? 0
        if count > 1 {
            // 获取index = 1的范围来截取 0 1
            let range = result?.rangeAtIndex(1)
            // 截取字符串
            let subString = (self as NSString).substringWithRange(range!)
            
            return subString
        } else {
            return "没有匹配到来源"
        }
    }
}